import { GaRegExp, ruleInject, ruleInjectable } from "../InjectionRule";

@ruleInjectable()
export default class exportValueRule extends GaRegExp {

	@ruleInject() private variableCreatedlRule!: GaRegExp;

	@ruleInject() private typeCreatedRule!: GaRegExp;

	@ruleInject() private functionRule!: GaRegExp;

	@ruleInject() private classRule!: GaRegExp;

	@ruleInject() private interfaceRule!: GaRegExp;

	@ruleInject() private structRule!: GaRegExp;

	@ruleInject() private hashMapRule!: GaRegExp;

	public RuleInit() {
		this.ParseRule([
			"(",
			this.Supply("SEMICOLON"), "(", this.variableCreatedlRule, ";", "|", this.typeCreatedRule, ";", "|", this.hashMapRule, ";", ")", "|",
			this.functionRule, "|",
			this.classRule, "|",
			this.interfaceRule, "|",
			this.structRule,
			")"
		]);
	}

}
